﻿#region 文件信息
/*----------------------------------------------------------------
// 
// 文件名称：	
// 文件功能描述：	
// 设计要求：	
//
// 文 件 名：    ITreeNode
// 创建者：      杨程
// 创建日期：	    2022/11/21 15:55:02

//----------------------------------------------------------------*/
#endregion


namespace Vampirewal.Core.Models.TreeModel;

/// <summary>
/// 
/// </summary>
public interface ITreeNode
{


    /// <summary>
    /// 获取父节点标识
    /// </summary>
    /// <returns></returns>
    object GetParentNodeMark();


    /// <summary>
    /// 设置父节点标识
    /// </summary>
    /// <param name="parentObj">设置的父节点对象</param>
    void SetParentNodeMark(object parentObj);


    /// <summary>
    /// 获取当前节点标识
    /// </summary>
    /// <returns></returns>
    object GetCurrentNodeMark();


    /// <summary>
    /// subNode是否为当前节点的子节点
    /// </summary>
    /// <param name="subNode">子节点</param>
    /// <returns></returns>
    bool IsSubNode(ITreeNode subNode);



    /// <summary>
    /// parentNode是否为当前节点的父节点
    /// </summary>
    /// <param name="parentNode"></param>
    /// <returns></returns>
    bool IsParentNode(ITreeNode parentNode);


    /// <summary>
    /// node是否与当前节点相同
    /// </summary>
    /// <param name="node">需要比较的节点</param>
    /// <returns></returns>
    bool IsSameNode(ITreeNode node);

    /// <summary>
    /// node是否与该项拥有相同父节点
    /// </summary>
    /// <param name="node"></param>
    /// <returns></returns>
    bool IsSameParent(ITreeNode node);
}

/// <summary>
/// 树节点路径
/// </summary>
public interface ITreePath
{
    /// <summary>
    /// 获取树节点路径
    /// </summary>
    /// <returns></returns>
    Queue<int> GetTreePath();
}
